function Stack() {
  const items = []

  // 从栈顶添加元素，压栈
  this.push = function (item) {
    items.push(item)
  }

  // 弹出
  this.pop = function () {
    return !this.isEmpty() && items.pop()
  }

  // 返回栈顶元素
  this.top = function () {
    return !this.isEmpty() && items[items.length - 1]
  }

  // 判断是否为空
  this.isEmpty = function () {
    return items.length === 0
  }

  // 返回栈里的大小
  this.size = function () {
    return items.length
  }

  // 清空栈
  this.clear = function () {
    items.length = 0
  }
}

module.exports = Stack
